package Views.Destino;

import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;

import Fisica.Destino.DAODestino;
import Inteface.InterfaceGrilla;
import Inteface.InterfacePanel;
import Modelo.Destino;

import javax.swing.JComboBox;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class DestinoCampos extends JPanel implements InterfaceGrilla, InterfacePanel {
	private JTextField tfID;
	private JComboBox cbSucursal, cbSeccion, cbOficina;
	private JTextField tfSucursal, tfSeccion;
	private JTextField tfOficina;

	/**
	 * Create the panel.
	 */
	public DestinoCampos(int id) {
		setLayout(null);
		this.setVisible(true);
		JLabel lblId = new JLabel("ID");
		lblId.setBounds(10, 11, 46, 14);
		add(lblId);
		
		tfID = new JTextField();
		tfID.setEditable(false);
		tfID.setBounds(99, 5, 53, 20);
		add(tfID);
		tfID.setColumns(10);
		
		JLabel lblSucursal = new JLabel("Sucursal *");
		lblSucursal.setBounds(10, 42, 90, 14);
		add(lblSucursal);
		
		JLabel lblSeccion = new JLabel("Seccion *");
		lblSeccion.setBounds(10, 67, 90, 14);
		add(lblSeccion);
		
		JLabel lblOficina = new JLabel("Oficina *");
		lblOficina.setBounds(10, 92, 90, 14);
		add(lblOficina);
		
		cbSucursal = new JComboBox();
		
		cbSucursal.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				initSecciones();
			}
		});
		cbSucursal.setBounds(99, 33, 150, 20);
		add(cbSucursal);
		
		cbSeccion = new JComboBox();
		cbSeccion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				initOficina();
			}
		});
		cbSeccion.setBounds(99, 58, 150, 20);
		add(cbSeccion);
		
		tfSucursal = new JTextField();
		tfSucursal.setEnabled(false);
		tfSucursal.setEditable(false);
		tfSucursal.setBounds(256, 33, 86, 20);
		add(tfSucursal);
		tfSucursal.setColumns(10);
		
		tfSeccion = new JTextField();
		tfSeccion.setEnabled(false);
		tfSeccion.setEditable(false);
		tfSeccion.setColumns(10);
		tfSeccion.setBounds(256, 58, 86, 20);
		add(tfSeccion);
		
		cbOficina = new JComboBox();
		cbOficina.setBounds(99, 83, 150, 20);
		add(cbOficina);
		
		tfOficina = new JTextField();
		tfOficina.setEditable(false);
		tfOficina.setBounds(256, 83, 86, 20);
		add(tfOficina);
		tfOficina.setColumns(10);
		
		this.initSucursales();	
		this.init(id);

	}

	@Override
	public void guardar() {
		try {
			
			DAODestino th = new DAODestino();
			int id = -1;
			if(tfID.getText().length() > 0)
			 id = Integer.parseInt(tfID.getText());
			
			Destino t = (Destino) th.getById(Integer.valueOf(id));		
			
//			"ID", "Marca", "Modelo", "Codigo"
			String model = "", marca = "", codigo = "";
			if (cbSeccion.getSelectedIndex() > 0)
				t.setSeccion(cbSeccion.getSelectedItem().toString());
			else
				if(tfSeccion.getText().length()>0)
					t.setSeccion(tfSeccion.getText());
				else t.setSeccion("");
			
			if (cbSucursal.getSelectedIndex() > 0)
				t.setSucursal(cbSucursal.getSelectedItem().toString());
			else 
				if(tfSucursal.getText().length()>0)
					t.setSucursal(tfSucursal.getText());
				else t.setSucursal("");
			
			if (cbOficina.getSelectedIndex() > 0)
				t.setOficina(cbOficina.getSelectedItem().toString());
			else 
				if(tfOficina.getText().length()>0)
					t.setOficina(tfOficina.getText());
				else t.setOficina("");
			
			if(t.getSucursal().length() > 0 && t.getSeccion().length() > 0 && t.getOficina().length() > 0){
				th.insert(t);
				this.cancelar();
			}				
			else
				JOptionPane.showMessageDialog(this,
					    "Debe completar todos los campos para guardar.",
					    "Error",
					    JOptionPane.ERROR_MESSAGE);
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

	@Override
	public void cancelar() {
		tfID.setText("");
		cbSucursal.setSelectedIndex(0);
		tfSucursal.setText("");
		cbSeccion.setSelectedIndex(0);
		tfSeccion.setText("");
		cbOficina.setSelectedIndex(0);
		tfOficina.setText("");	
		
		this.finNuevo();
	}

	public Object primero() {
		DAODestino dt = new DAODestino();
		return (Destino) dt.getFirst();		
	}

	public Object ultimo() {
		DAODestino dt = new DAODestino();
		return (Destino) dt.getLast();
	}

	public Object anterior() {
		DAODestino dt = new DAODestino();
		if(tfID.getText().length()>0)
			return (Destino) dt.getPre(Integer.parseInt(tfID.getText()));
		else return primero();
	}

	public Object posterior() {
		DAODestino dt = new DAODestino();
		if(tfID.getText().length()>0)
			return (Destino) dt.getPost(Integer.parseInt(tfID.getText()));
		else return primero();
	}

	@Override
	public boolean grilla() {
		return false;
	}

	@Override
	public boolean campos() {
		return true;
	}

	@Override
	public int getPanel() {
		return 0;
	}

	@Override
	public void init(int id) {	
		try {
			this.finNuevo();
			if(id >= 0){
				DAODestino th = new DAODestino();
				Destino t = (Destino) th.getById(id);		
				
				tfID.setText(Integer.toString(t.getId()));
				cbSucursal.setSelectedItem(t.getSucursal());
				initSecciones();
				cbSeccion.setSelectedItem(t.getSeccion());				
				initOficina();
				cbOficina.setSelectedItem(t.getOficina());
				
			}else{
				cancelar();
			}
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	@Override
	public int getRowSelected() {
		return -1;
	}
	
	//CARGA LISTA DE SUCURSALES 
    public void initSucursales(){
        cbSucursal.removeAllItems();
        cbOficina.removeAllItems();
        cbSeccion.removeAllItems();
        List<Object>list = null;
        DAODestino dt = new DAODestino();
        Destino d;
        list = dt.listSucursal();
        cbSucursal.addItem("");  
        for(Object o: list) {
        	d = (Destino) o;
        	cbSucursal.addItem(d.getSucursal()); 
           } 
        }
    
    
    //CARGA LISTA DE SECCIONES 
    public void initSecciones(){
    	cbOficina.removeAllItems();
        List<Object>list = null;
        String str; 
        DAODestino dd = new DAODestino();
        Destino d;
        if (cbSucursal.getSelectedIndex() < 0){
                str = "";             
        }else {
                str = cbSucursal.getSelectedItem().toString(); 
                list = dd.listSecciones(str);
	            cbSeccion.removeAllItems();
	            cbSeccion.addItem("");  
	            for(Object o: list) {
	                d = (Destino)o;
	                cbSeccion.addItem(d.getSeccion()); 
               } 
        }           
        }
    //CARGA LISTA DE SECCIONES 
    public void initOficina(){
        List<Object>list = null;
        String sec, suc; 
        DAODestino dd = new DAODestino();
        Destino d;
        if (cbSeccion.getSelectedIndex() < 0){
                sec = "";             
        }else {
                sec = cbSeccion.getSelectedItem().toString();
                suc = cbSucursal.getSelectedItem().toString(); 
                list = dd.listOficina(suc, sec);
	            cbOficina.removeAllItems();
	            cbOficina.addItem("");  
	            for(Object o: list) {
	                d = (Destino)o;
	                cbOficina.addItem(d.getOficina()); 
               } 
        }           
        }
    

	@Override
	public void nuevo() {
		boolean nuevo = !tfSeccion.isEnabled();
		tfSeccion.setEnabled(nuevo);
		tfSeccion.setEditable(nuevo);
		tfSucursal.setEnabled(nuevo);
		tfSucursal.setEditable(nuevo);
		tfOficina.setEnabled(nuevo);
		tfOficina.setEditable(nuevo);
	}
	
	public void finNuevo() {
		tfSeccion.setEnabled(false);
		tfOficina.setEditable(false);
		tfSucursal.setEnabled(false);			
	}

	@Override
	public int setprimero() {
		return -1;
	}

	@Override
	public int setultimo() {
		return -1;
	}

	@Override
	public int setanterior() {
		return -1;
	}

	@Override
	public int setposterior() {
		return -1;
	}
}
